package com.en.sharing.staticfactory;

import java.util.Date;

/**
 * 日期上下限
 * tips：minDate 和 maxDate 可以使用 long 代替，请忽略
 *
 * @author 付晓飞
 * @date 2024/3/12 7:13 下午
 */
public final class DateLimit {

    /**
     * 下限
     */
    private final Date minDate;

    /**
     * 上限
     */
    private final Date maxDate;

    private DateLimit(Date minDate, Date maxDate) {
        this.minDate = minDate;
        this.maxDate = maxDate;
    }

    public static DateLimit of(Date minDate, Date maxDate) {
        final Date minDateC = new Date(minDate.getTime());
        final Date maxDateC = new Date(maxDate.getTime());
        if (minDateC.after(maxDateC)) {
            throw new IllegalArgumentException("日期下限不能大于上限");
        }
        return new DateLimit(minDateC, maxDate);
    }

    public Date getMinDate() {
        return new Date(minDate.getTime());
    }

    public Date getMaxDate() {
        return new Date(maxDate.getTime());
    }
}
